c语言问题````急啊````

来源:百度知道 编辑:UC知道 时间:2024/05/25 22:20:32
这是个c语言二机编程题,帮忙看一下fun函数咋错啦,语法没错误,但是一执行就错误,软件需要关闭.
#include <stdio.h>
#include <string.h>
void fun ( char *ss )
{
int i;
for(i=1;ss[i]!='\0';i=i+2)

if(ss[i]>='a'&&ss[i]<='z')
ss[i]=ss[i]-32;

}

main( )
{ char tt[81] ;
void NONO ( );
printf( "\nPlease enter an string within 80 characters:\n" ); gets( tt );
printf( "\n\nAfter changing, the string\n \"%s\"", tt );
fun( tt );
printf( "\nbecomes\n \"%s\"\n", tt );
NONO ( );
}

void NONO ( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp, *wf ;
char tt[81] ;
int i ;

fp = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(fp,

我调试过了
我可以肯定的回答你:
你的答案没错,,至于说你

但是一执行就错误,,

是不是你调试的方法有悟?,,我用你的答案和标准答案对比过,完全没问题

再有问题的可以MM我,我帮你搞定

void fun ( char *ss )
{
int i;
for(i=1;ss[i]!='\0';i=i+2)

if(ss[i]>='a'&&ss[i]<='z')
ss[i]=ss[i]-32;

}

这样 i=i+2 当结束符在偶数位上时就无法找到结束符,就成了死循环了

我试了一下没有错误啊,它们两个就是一样的visual6++试过的没有出错

不一样啊,因为答案里的i是+1的,所以可以遍历到ss数组中的所有的元素。
而你写的i是+2的,那么只能遍历到奇数索引的ss[i]。
万一结束符'\0'所在的字符索引是偶数,那么你就遍历不到了,程序就崩溃了。